// dataKey 当前localstorage中的键 primaryKey 数据的唯一标识符
class DataHelper {
    dataKey: string;
    primaryKey: string;
    // let dh = new DataHelper('dataKey','id') 类的使用
    constructor(dataKey = '',primaryKey = '') {
        this.dataKey = dataKey;
        this.primaryKey = primaryKey
    }

    // 读取数据
    readData(): any{
        // 1.读取本地数据dataKey
        const strData: string | null = localStorage.getItem(this.dataKey)
        // 2.将读取到的数据转成数组对象
        let arrData: any = []
        if(strData!=null) {
            arrData = JSON.parse(strData)
        }
        //3. 返回数组对象
        return arrData
    }
    // 存数据
    saveData(arrData: Array<Record<string, any>>): void {
        // 转数组转为json字符串
        const str: string = JSON.stringify(arrData)
        // 将字符串保存在localstorage
        localStorage.setItem(this.dataKey,str)
    }
    // 新增数据
    addData(conStr: string): number {
       // 1. 获取localstorage中的数组对象
        const arr: any = this.readData()
        // 将评论字符串转为对象
        const obj: any = {
            content: conStr
        }
        // 取出数组最后一项的id值+1
        const newId = arr.length > 0 ? arr[arr.length-1]
            [this.primaryKey]+1 : 1
       obj[this.primaryKey] = newId
        // 2. 将conStr追加到数组对象的最后
        arr.push(obj)
       // 3. 保存新的数组对象
        this.saveData(arr)
        return newId
    }
    // 删除数据
    removeData(id: string | number): boolean{
        // 读取本地数据
        const arr = this.readData()
        // 找到对应的id项，删除该项
        const index = arr.findIndex((ele: any) => {
            return ele[this.primaryKey] == id
        })
        if(index > -1) {
            arr.splice(index,1)
            // 保存数据
            this.saveData(arr)
            return true
        }

        return false
    }

}
